#ifndef CPP_TOOLS_SK_STORAGE_HPP
#define CPP_TOOLS_SK_STORAGE_HPP

#include "sk_storage/const.hpp"
#include "sk_storage/log.hpp"
#include "sk_storage/memmap.hpp"

#include <mutex>

namespace sk_storage {

class Sk {
private:

  std::mutex mu_;

  sk_storage::log::Writer* writer_;

  sk_storage::log::Reader* reader_;

  MemMap* mp_;

public:

  Sk() = default;
  
  void Init(const std::string& log_file);

  Status Set(const std::string &key, const std::string &value);

  Status Get(const std::string &key, std::string &value);

  ~Sk();
};

} // namespace sk_storage

#endif